package day16.xianchengdemo.executorService;

import java.util.concurrent.*;

public class demo1
{
    public static void main(String[] args)
    {              // 创建方式：采用ThreadPoolExecutor实现类来创建，或者使用Executors工具类来创建 ，它可以调用方法返回不同特点的线程池对象
             //  线程池
        ExecutorService pool=new ThreadPoolExecutor(3,5,10,
                TimeUnit.SECONDS,new ArrayBlockingQueue<>(3), Executors.defaultThreadFactory(),  //线程工厂：把任务包装成线程
                new ThreadPoolExecutor.AbortPolicy());
                  //拒绝策略，任务队列满了就抛异常


        //处理任务Runnable，callable

      Runnable task = new MyRunnable();
//        Thread t1=new Thread(task);
//          t1.start();
        pool.execute(task);
        pool.execute(task);
        pool.execute(task);
        pool.execute(task);
        pool.execute(task);/*测试一下是否复用线程了，任务5个，就三个线程来回使用*/

//        //关闭线程池（一般不关闭）
//        pool.shutdown();//等所有任务完成再关闭
//        pool.shutdownNow();//立即结束，可能主线程先跑到这，但是里面的任务还没做完






    }
}
